package com.zhiwang.planet.mvp.v

import android.graphics.Bitmap
import com.zhiwang.planet.mvvm.model.ListReponseWrapper
import com.zhiwang.planet.mvvm.model.entity.*
import com.zhiwang.planet.mvvm.model.entity.main.*

//import com.hiray.planet.mvvm.model.entity.WithDrawRecord


interface AuthView {
    fun onAuthExpired()

    fun onError(t: Throwable)
}

interface LoginView : AuthView {
    fun onLogin(user: User)
}

interface WxLoginView:AuthView{
    fun onLogin(user:User)
}

interface LogoutView : AuthView {
    fun onLogout()
}

interface AvatarView : AuthView {
    //    fun onAvatarUpload(avatarUrl: String)
    //更新成功，上传成功
    fun onAvatarChange(avatarUrl: String)
}


interface FindPasswordView : AuthView {
    fun onPasswordFind()
}


interface ChangePasswordView : AuthView {
    fun onPasswordChanged()
}

interface LocalUserInfoView : AuthView {

    fun onUserInfoLoad(userInfo: User?)

}

interface SmsCodeView : AuthView {

    //成功发送验证码
    fun onSmsSend()
}

interface AccountBindView : AuthView {
    fun onAccountBind()
}

interface GraphView : AuthView {
    fun onGraphCodeLoad(b: Bitmap)
}

interface ChangePayPasswordView : AuthView {
    fun onPayPwdChanged()
}

interface RegisterView : AuthView {
    fun onRegisterSuccess()
}

interface UserInfoView : AuthView {
    //在修改密码页面（也是找回密码页面），由于是公用的一个页面，所以user 为null表示是找回密码
    fun onUserInfoLoad(user: User?)
}

interface InviteInfoView : AuthView {
    fun onInviteInfoLoad(inviteInfo: InviteInfo)
}

interface DiamondBeanInfoView : AuthView {
    fun onLoadDaimondBeanInfo(diamondBeanInfo: DiamondBeanInfo)
}

interface FeedBackView : AuthView {
    fun onFeedBackSend()
}

//withdraw_btn_bg

interface WithDrawView : AuthView {
    /**
     * 提现余额
     */
    fun onWithDraw(body: WithDrawBody)
}

interface WithDrawRecordView : AuthView {

    fun onNextPageLoad(data: WithDrawRecordBody)

    fun onPageRefresh(data: WithDrawRecordBody)
}

interface WithDrawDataView : AuthView {
    fun onWithDrawListLoad(data: List<String>)
}

interface NickNameView : AuthView {
    fun onNickNameSet(nickName: String)
}

interface WxBindCodeInfoView : AuthView {
    fun onLoadWxBindCodeInfo(wxBindCodeInfo: WxBindCodeInfo)
}

interface BindWxView: AuthView {
    fun onWxBind()
}

interface CheckBindWxView: AuthView {
    fun onCheckWxBind(bindBody:BindBody)
}

interface VipRecordView : AuthView {
    fun onLoadVipRecord(vipRecordModel: VipRecordModel)
}

interface DiamondRecordView : AuthView {
    fun onRecordLoad(body: ConsumptionRecordBody)
}

interface ApkUpdateView : AuthView {
    fun onUpdate(updateCheck: UpdateCheck)
}

interface ApkUpdateView2 : AuthView {
    fun onUpdate2(updateCheck: UpdateCheck)
}

interface AlipayView : AuthView {
    fun onAlipay(sign: String)
}

interface DiamondPayView : AuthView {
    fun onDiamondPay()
}

interface RankDataView : AuthView {
    fun onLoadRankData(rankModel: RankModel)
}

interface RankProfitClaimView : AuthView {
    fun onRankProfitClaimed()
}

interface FictionCompleteView : AuthView {
    fun onFictionTimePostSuccess(s: String)
}

interface VipView : AuthView {
    fun onLoadVipInfo(vipModel: VipModel)
}


interface LoadDataView<T> : AuthView {

    fun onLoadData(datas: List<T>)

    fun onLoadMore(datas: List<T>)
}

interface RewardListView : AuthView {
    fun onLoadReward(body: ListReponseWrapper<Reward>)
}

interface KmView : AuthView {
    fun onLoadKmInfo(kmInfo: KmInfo)
}

interface PceggView : AuthView {
    fun onPceggUrlLoad(url: String)
}

interface GameListView : AuthView {
    fun onGameListLoad(gameList: List<GameItem>)
}